import { _decorator, Vec3 , Node, randomRangeInt, random} from 'cc';
import { SkillManager } from './SkillManager';
import { EBuff, EGroup, EntityType, ESkill } from '../Config/Enum';
import ObjectPoolManager from '../Core/ObjectPoolManager';
import { Collider2D } from 'cc';
import { PlayerManager } from '../PlayerManager';
import { BattleManager } from '../BattleManager';
import { EnemyManager } from '../EnemyManager';

const { ccclass } = _decorator;
// rune1: "武学范围扩大100%",
// rune2: "太极白色部分的敌人缴械2秒",
// rune3: "太极黑色部分的敌人有10%概率被吞噬",

@ccclass('WudangSkill3')
export class WudangSkill3 extends SkillManager {
    private _hasSplit = false;
    private _contactPosition: Vec3 = new Vec3(0, 0, 0);
    runeId = 0
    numOfBullets = 1; // 默认是3个
    level
    em
        private _hitCount = 0; // 已打击次数
    private _totalHits = 15; // 总打击次数
    private _hitInterval = 0.2; // 打击间隔(秒)
        // 添加变量存储DragEnemy节点
    private _dragEnemyNode: Node | null = null;

    // 是否是主子弹（由玩家直接发射的子弹）
    private isMasterBullet = true;

    leftBlack: boolean = true; // 左边是太极图的黑色

    probabilityOfRemove = 0.1; // 敌人被直接吞噬的概率


    init(type: ESkill, pm: PlayerManager) {
        this.node.position = new Vec3(0,30,0)
        this.node.angle = 0


        if (!this.isMasterBullet) {
            super.init(type, pm);
            return;
        }

        if (this.isMasterBullet) {
            this._hasSplit = false;
        }

        super.init(type, pm);
        //this._hitCount = 0;

                // 直接开始伤害循环（使用定时器方案）
        //this.scheduleDamage();

        if(Math.random() > 0.5){
            this.node.angle = 180
            this.leftBlack = false

        }






        // 符文效果
        switch (this.runeId) {
            case 1:

                break;
            case 2:
                this.scale *=2

                break;  
            case 3:

                    
  

                break;
            default:

                break;
        }

    }


        // 使用定时器调度伤害
    // private scheduleDamage() {
    //     // 立即执行第一次打击
    //     this.damageAllEnemies();
    //     this._hitCount++;
        
    //     // 后续打击使用定时器
    //     this.schedule(() => {
    //         this.damageAllEnemies();
    //         this._hitCount++;
            
    //         // // 完成所有打击后回收节点
    //         // if (this._hitCount >= this._totalHits) {
    //         //     ObjectPoolManager.Instance.ret(this.node);
    //         // }
    //     }, this._hitInterval, this._totalHits - 1);
    // }



    protected onHitEnemy(self, other: Collider2D): void {
        this.em = other.node.getComponent(EnemyManager)
        // // 每隔1秒造成1次伤害
        // this.schedule(() => {
        //     this.damageAllEnemies(); // 假设takeDamage是敌人组件中的方法
        //     console.log("WudangSkill3 onHitEnemy this.damage:", this.damage);
        // }, 0.2, 1, 0);



        this._contactPosition = other.node.worldPosition.clone();




        switch (this.runeId) {
            case 1:

                break;
    
            case 2:
                //在太极图白色的部分的敌人有概率被缴械
                if(this.leftBlack){
                    
                    if (Math.random() < 1) { // 10%概率

                        //如果敌人的位置在太极图的黑色部分
                        if(other.node.worldPosition.x > this.node.worldPosition.x){
                            console.log("WudangSkill3: 黑色在左边，敌人缴械，碰撞白色");
                            this.applyBuffToEnemy(this.em, 1,EBuff.Disarm, 0, 2); // 易伤
                        }
                    }
                }else{
                    if (Math.random() <1) { // 10%概率

                        //如果敌人的位置在太极图的黑色部分
                        if(other.node.worldPosition.x > this.node.worldPosition.x){
                            console.log("WudangSkill3: 黑色在右边，敌人没事，碰撞黑色");
                            this.applyBuffToEnemy(this.em, 1,EBuff.Disarm, 0, 2); // 易伤
                        }
                    }
                }


                break;
            case 3:
                //在太极图黑色的部分的敌人有概率被直接吞噬
                if(this.leftBlack){
                    
                    if (Math.random() < 1) { // 10%概率
                        //如果敌人的位置在太极图的黑色部分
                        if(other.node.worldPosition.x > this.node.worldPosition.x){
                            console.log("WudangSkill3: 黑色再左边，敌人没事，碰撞白色");
                            this.em.directDie()
                            return
                        }
                    }
                }else{
                    if (Math.random() <1) { // 10%概率

                        //如果敌人的位置在太极图的黑色部分
                        if(other.node.worldPosition.x > this.node.worldPosition.x){

                            console.log("WudangSkill3: 黑色在右边，敌人吞噬，碰撞黑色");
                            this.em.directDie()
                            return
                        }
                    }
                }



                break;
            default:
                break;
        }

                // 先调用父类方法处理伤害
        super.onHitEnemy(self, other);


    }

        // 对所有敌人造成伤害
    private damageAllEnemies() {
        const enemies = BattleManager.Instance.getAliveEnemies();
        
        enemies.forEach(enemy => {
            const em = enemy.getComponent(EnemyManager);
            if (em) {
                em.hurt(this.damage, this.playerType);
            }
        });
    }




}